package com.kasinf.sample.satoken.config;

import cn.dev33.satoken.SaManager;
import cn.dev33.satoken.filter.SaServletFilter;
import cn.dev33.satoken.interceptor.SaInterceptor;
import cn.dev33.satoken.same.SaSameUtil;
import cn.dev33.satoken.stp.StpUtil;
import com.kasinf.framework.common.pojo.CommonResult;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.InterceptorRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;

import static com.kasinf.framework.common.exception.enums.GlobalErrorCodeConstants.FORBIDDEN;

/**
 * 权限安全配置
 */
@Configuration
public class SaSecurityAutoConfiguration implements WebMvcConfigurer {

    /**
     * 注册sa-token的拦截器
     */
    @Override
    public void addInterceptors(InterceptorRegistry registry) {
        // 注册路由拦截器，自定义验证规则
        registry.addInterceptor(
                new SaInterceptor(handle -> StpUtil.checkLogin()))
                .addPathPatterns("/**")
                .excludePathPatterns("/login/**");
    }

    /**
     * 校验是否从网关转发
     */
//    @Bean
//    public SaServletFilter getSaServletFilter() {
//        return new SaServletFilter()
//                .addInclude("/**")
//                .addExclude("/actuator", "/actuator/**", "/login/**")
//                .setAuth(obj -> {
//                    if (SaManager.getConfig().getCheckSameToken()) {
//                        SaSameUtil.checkCurrentRequestToken();
//                    }
//                })
//                .setError(e -> CommonResult.error(FORBIDDEN));
//    }
}
